/**
 * 
 */
package com.shifan.phone.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.shifan.phone.common.Tools;
import com.shifan.phone.dao.ProductTypeModelMapper;
import com.shifan.phone.model.ProductTypeModel;
import com.shifan.phone.service.ProductTypeModelService;

/**
 * 产品类型Service接口实现类
 * @author TangLei
 * @date 2018年12月5日 下午2:12:15
 * @version 1.0
 */
@Service
public class ProductTypeModelServiceImpl implements ProductTypeModelService{
	//注入产品类型Dao接口
	@Resource
	ProductTypeModelMapper productTypeModelDao;
	
	/**
	 * 删除产品类型信息
	 * @param proTypeId 产品类型ID
	 * @return 影响的行数
	 */
	@Override
	public int deleteByPrimaryKey(String proTypeId) {
		// 调用产品类型Dao接口删除的方法
		return productTypeModelDao.deleteByPrimaryKey(proTypeId);
	}

	/**
     * 增加产品类型（一次性增加所有字段）
     * @param record 产品类型对象
     * @return 影响的行数
     */
	@Override
	public int insert(ProductTypeModel record) {
		//得到一个随机数
		String proTypeId = Tools.getRandomString();
		//给产品类型ID赋值
		record.setProTypeId(proTypeId);
		//判断自关联ID是否为空
		if(Tools.isEmpty(record.getProTypePid())){
			record.setProTypePid("0");
		}
		// 调用产品类型Dao接口增加的方法
		return productTypeModelDao.insert(record);
	}

	/**
     * 增加（增加一个或多个字段）
     * @param record 产品类型对象
     * @return 影响的行数
     */
	@Override
	public int insertSelective(ProductTypeModel record) {
		//得到一个随机数
		String proTypeId = Tools.getRandomString();
		//给产品类型ID赋值
		record.setProTypeId(proTypeId);
		//判断自关联ID是否为空
		if(Tools.isEmpty(record.getProTypePid())){
			record.setProTypePid("0");
		}
		// 调用产品类型Dao接口增加的方法
		return productTypeModelDao.insertSelective(record);
	}

	/**
     * 根据ID查询
     * @param proTypeId 产品类型ID
     * @return 产品对象
     */
	@Override
	public ProductTypeModel selectByPrimaryKey(String proTypeId) {
		// 调用产品类型Dao接口根据ID查询的方法
		return productTypeModelDao.selectByPrimaryKey(proTypeId);
	}

	/**
     * 修改（修改一个或多个字段）
     * @param record 产品类型对象
     * @return 影响的行数
     */
	@Override
	public int updateByPrimaryKeySelective(ProductTypeModel record) {
		//判断自关联ID是否为空
		if(Tools.isEmpty(record.getProTypePid())){
			record.setProTypePid("0");
		}
		// 调用产品类型Dao接口修改的方法
		return productTypeModelDao.updateByPrimaryKeySelective(record);
	}

	/**
     * 修改（修改一个或多个字段）
     * @param record 产品类型对象
     * @return 影响的行数
     */
	@Override
	public int updateByPrimaryKey(ProductTypeModel record) {
		//判断自关联ID是否为空
		if(Tools.isEmpty(record.getProTypePid())){
			record.setProTypePid("0");
		}
		// 调用产品类型Dao接口修改的方法
		return productTypeModelDao.updateByPrimaryKey(record);
	}

	/**
     * 查询所有产品类型信息（包括根据条件查询）
     * @param record 产品类型对象
     * @return map集合
     */
	@Override
	public Map<String, Object> findAll(ProductTypeModel record) {
		//创建一个map集合
		Map<String,Object> map = new HashMap<String,Object>();
		// 调用产品类型Dao接口查询所有的方法
		List<ProductTypeModel> list = productTypeModelDao.findAll(record);
		//判断list集合是否为空
		if(!Tools.isEmpty(list)){
			//循环遍历集合
			for(ProductTypeModel productTypeModel:list){
				//判断自关联ID是否为0
				if(!"0".equals(productTypeModel.getProTypePid())){
					//调用产品类型Dao接口里面的根据自关联ID查询类型名称的方法
					String proTypeNames = productTypeModelDao.findByPid(productTypeModel.getProTypePid());
					//给proTypeNames赋值
					productTypeModel.setProTypeNames(proTypeNames);
				}else {
					//给proTypeNames赋值
					productTypeModel.setProTypeNames("根级");
				}
				
			}
		}
		// 调用产品类型Dao接口查询总行数的方法
		int count = productTypeModelDao.findCount(record);
		//给map集合赋值
		map.put("code", 0);
		map.put("msg", "");
		map.put("count", count);
		map.put("data", list);
		//返回map集合
		return map;
	}

	/**
     * 查询所有的类型名称和ID
     * @return 类型对象集合
     */
	@Override
	public List<ProductTypeModel> findAllNameOrId() {
		// 调用产品类型Dao接口里面的查询所有类型名称和ID
		return productTypeModelDao.findAllNameOrId();
	}

}
